package com.auto.survey.util.monitoring.entity

import androidx.room.Entity
import androidx.room.ForeignKey
import androidx.room.PrimaryKey

/**
 * 后方交会验证结果数据类
 * 存储单个控制点的观测值与理论值的比对结果
 */

@Entity(
    tableName = "RearIntersectionVerificationResult",
    foreignKeys = [
        ForeignKey(
            entity = RearIntersectionCalculationResult::class,
            parentColumns = ["id"],
            childColumns = ["calculationResultId"],
            onDelete = ForeignKey.Companion.CASCADE
        )
    ]
)
data class RearIntersectionVerificationResult(
    @PrimaryKey(autoGenerate = true) val id: Int = 0,
    var calculationResultId: Int =-1, // 关联到主结果的ID
    /** 控制点ID，唯一标识控制点 */
    val pointId: Int,
    /** 控制点名称 */
    val pointName: String,
    /** 观测水平距离与理论水平距离的差值（单位：米） */
    val distanceDifference: Double,
    /** 观测水平角与理论水平角的差值（单位：弧度） */
    val angleDifference: Double,
    /** 距离相对误差（差值/观测距离），表征距离测量的相对精度 */
    val relativeDistanceDifference: Double,
    /** 观测天顶距与理论天顶距的差值（单位：弧度） */
    val zenithAngleDifference: Double,
    /** 距离验证是否通过的标志（true表示符合精度要求） */
    val isDistancePassed: Boolean,
    /** 角度验证是否通过的标志（true表示符合精度要求） */
    val isAnglePassed: Boolean,
    /** 天顶距验证是否通过的标志（true表示符合精度要求） */
    val isZenithAnglePassed: Boolean,
    /** 该控制点的整体验证结果（true表示距离、角度和天顶距均通过验证） */
    val isPassed: Boolean
)